package com.zwh.se.constant_variable_operator;

/**
 * 此处是向部分跳过了使用控制台命令行来学习java编程的朋友的一个补充说明。以及包括对注释的解释。
 * <p>
 * 首先，如果你现在不是使用控制台命令行编程，那么你大概率是在使用开发工具，那么你所使用的开发工具就称之为"IDE(Integrated Development Environment)",
 * 翻译就是"集成开发环境"，一般包括了代码编辑器、编译器、调试器和图形用户界面等工具。
 * 而在此处补充的就是在不使用IDE的情况下你需要了解的东西(因为没法演示)
 * <p>
 * 所谓的控制台命令行，意思就是你通过cmd指令所打开的黑色框，在里面你可以输入命令对文件进行编译或运行。
 * 当你使用命令行的方式来进行编译和运行时，注意的是文件的编码会默认采用你的操作系统所设置的编码，一般而言也就是GBK，
 * 正因如此如果在使用命令行编程时，相对应的java文件需要设置为ANSI的编码格式(ANSI不是某种编码,就是根据你的操作系统本身来决定的意思)，从而避免出现乱码错误
 * <p>
 * cmd操作(常用):
 * 1、编译：javac -encoding utf-8 文件名.java   如果不打算局限于GBK的操作系统环境来编程,那么可以使用此命令来使用utf-8来编码
 * 2、运行：java 文件名(注意的是被运行的是字节码文件(也就是.class文件))
 * <p>
 * 编写规范:
 * 1.类名首字母大写,遵循驼峰表示法
 * 2.方法名,变量名首字母小写,遵循驼峰表示法
 * 3.标识符不能使用拼音,中文,只能使用有意义的英文单词
 *
 * @author yexi
 */
public class CommentAndCmd {
    //单行注释:学名叫做行注释(LineComment),可以注释一行
//    注释不会参与编译，编译后产生的字节码文件中不会有注释的内容。
//    当使用cmd通过 javac 文件名.java 编译时出现了"错误：编码GBK的不可映射字符"问题,这是因为操作系统默认编码格式的问题,
//    因为Java内部默认的是Unicode格式的,此时就需要使用 javac -encoding utf-8 文件名.java 来解决
//    编译完成后生成字节码文件(扩展名为.class)，如果编译失败，不会生成字节码文件。

    /*
       多行注释:学名叫做块注释(BlockComment),可以注释多行
       使用javac来编译时，什么都没有才是好事，代表成功了
       使用javac来编译时，公共类(public所定义的类)必须与文件名保持一致，否则编译将会出错(原理：先声明后使用)
       类名最好与字节码文件保持一致
    */

    /**
     * 文档注释:可以注释多行。此外,可通过命令配合jdk提供的工具javadoc.exe对文档注释进行解析，生成一套以网页文件形式体现的该程序的说明文档。(各类语法的解释之类)
     * 用法: javadoc [options] [packagenames] [sourcefiles] [@files]
     * 示例命令:
     * javadoc 文件名.java -encoding UTF-8
     * 需要注意的是，即使成员没有文档注释，Javadoc 也会在 API 文档中显示它们的名称和签名。但是，没有文档注释的成员将不会在 API 文档中包含详细信息。
     * <p>
     * javadoc文档只默认处理由public和protected修饰的类、方法、接口、成员变量、构造器和内部类的文档注释。
     * 如果你希望将(private 或默认)的成员也包含在Javadoc中，你可以使用-package 或 -private 参数来启用这些成员的文档注释。
     * 示例命令:
     * javadoc -private 文件名.java -encoding UTF-8
     */
    public static void main(String[] args) {


        //在控制台中打印括号内容(普通式样)
        //WARNING:前情提要,这个println里的参数为了在控制台以字符串输出,因此底层对其调用了 参数.toString 方法
        //         所以本质应该是这样的：System.out.println("Hello World!".toString());
        System.out.println("Hello World!");

        //在控制台中打印括号内容(以出bug时的式样,报红色)
        System.err.println("Error");

        //它们都属于Java中 流 的一种概念，这个知识点扩展可以在 io 包阅读。

        //区别(简单介绍，具体在io包那里补充):
        // System.out: 标准输出流。打印内容是正常式样。
        // System.err: 标准错误流。打印内容是异常式样。
        // 它们在jdk1.8中的区别就是两者属于不一样的流，仅仅如此，这也使得它们打印位置是相对不固定的(实际上规律是可寻的)。

        //在控制台中打印括号内容(不换行,在同一行输出)
        System.out.print("my");
        System.out.print("java");
    }
}
